package com.cictec.middleware.tde.rm.protocol.rm.message;

import java.util.Date;

import com.cictec.middleware.tde.rm.protocol.TerminalMessage;

/**
 * 0x21 运行告警
 * 
 * @author Zhibin
 *
 */
public class Rm0x21TerminalMessage extends TerminalMessage {

	private static final long serialVersionUID = -2484525317229016404L;
	
	/** 产生时间 HEX 4 字节 数据包产生的时间 */
	private Date createTime;
	/** 纬度 HEX 4 字节 见数据定义 */
	private double lat;
	/** 经度 HEX 4 字节 见数据定义 */
	private double lng;
	/** 速度 HEX 1 字节 单位为公里/小时 */
	private int speed;
	/** 方位角 HEX 1 字节 除以 2 后取整 */
	private int angle;
	/** 海拔高度 HEX 2 字节 单位为米 */
	private int altitude;
	/** 站点编号 HEX 2 字节 告警前一站站号 */
	private int stationNum;
	/**
	 * 运行标准 HEX 1 字节 告警参照的标准， 见告警类 型表中的说明 : <br>
	 * 0x01 超速告警 运行标准为限速标准，最高数值为超速期间最高速度 <br>
	 * 0x02 偏离线路 运行标准为 0，最高数值为偏离线路期间最远距离 <br>
	 * 0x03 到站未停车 运行标准为 0，最高数值为 0 <br>
	 * 0x04 开门行车 运行标准为 0，最高数值为 0 <br>
	 * 0x05 到站未开车门 运行标准为 0，最高数值为 0 <br>
	 * 0x06 中途开车门 运行标准为 0，最高数值为 0 <br>
	 * 0x07 车厢温度高（2） 最高数值为最高温度，最高位为正负 <br>
	 * 0x08 车厢温度低（2） 最高数值为最低温度，最高位为正负 <br>
	 * 0x09 滞站告警 最高数值为 0（新报站系统里是否有该参数？） <br>
	 * 0x10 紧急加速（2） <br>
	 * 0x11 紧急刹车（2） <br>
	 * 0x12 票箱门报警（1+） 运行标准为 0，最高数值为 0 <br>
	 * 0x13 不录像报警 ? <br>
	 * 0x14 硬盘丢失告警 运行标准为 0，最高数值为 0 <br>
	 * 0x15 SD 卡丢失告警 运行标准为 0，最高数值为 0 <br>
	 * 0x16 GPS 模块告警 运行标准为 0，最高数值参见“硬件附件状态表” <br>
	 * 0x17 硬盘故障告警 运行标准为 0，最高数值为故障编码 <br>
	 * 0x18 视频丢失告警 运行标准为 0，最高数值为视频通道号。 <br>
	 * 0x19 打板告警 运行标准为 0，最高数值为 0 <br>
	 * 0x20 磁盘格式化 运行标准为 0，最高数值为 0 <br>
	 * 0x21 POS 机车号不匹配 运行标准为 0，最高数值为 0 <br>
	 * 0x22 黑点，弯点告警 运行标准为 0，最高数值为 0 <br>
	 * 0x23 气压 1 告警 运行标准为 0，最高数值为 0 <br>
	 * 0x24 气压 2 告警 运行标准为 0，最高数值为 0 <br>
	 * 0x25 机油压力报警 运行标准为 0，最高数值为 0 <br>
	 * 0x26 冷却水位报警 运行标准为 0，最高数值为 0 <br>
	 * 0x27 发动机仓温过高 运行标准为 0，最高数值为 0 <br>
	 * 0x28 转速报警 运行标准为 0，最高数值为 0 <br>
	 * 0x29 水温报警 运行标准为 0，最高数值为 0 <br>
	 * 0x30 电压报警 运行标准为 0，最高数值为 0 <br>
	 * 0x31 电子站牌传感器震 动告警运行标准为 0，最高数值为 0 <br>
	 * 0x32 电子站牌门磁开关告警
	 */
	private int warnType;
	/** 运行标准 HEX 1 字节 告警参照的标准， 见告警类 型表中的说明 */
	private int standValue;
	/** 起始标识 HEX 1 字节 0 为结束，1 为开始 */
	private int start;
	/** 最高数值 HEX 2 字节 起始标识为 0 时填入该项 数值， 见告警类型表中的说明 */
	private int maxValue;
	/** 持续时间 HEX 2 字节 起始标识为 0 时填入该项 数值 */
	private int warnDuration;
	/** 预留 HEX 2 字节 预留 */
	private int reversed;

	public Rm0x21TerminalMessage(Header header) {
		super(header);
	}

	/** 产生时间 HEX 4 字节 数据包产生的时间 */
	public Date getCreateTime() {
		return createTime;
	}

	/** 产生时间 HEX 4 字节 数据包产生的时间 */
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

	/** 纬度 HEX 4 字节 见数据定义 */
	public double getLat() {
		return lat;
	}

	/** 纬度 HEX 4 字节 见数据定义 */
	public void setLat(double lat) {
		this.lat = lat;
	}

	/** 经度 HEX 4 字节 见数据定义 */
	public double getLng() {
		return lng;
	}

	/** 经度 HEX 4 字节 见数据定义 */
	public void setLng(double lng) {
		this.lng = lng;
	}

	/** 速度 HEX 1 字节 单位为公里/小时 */
	public int getSpeed() {
		return speed;
	}

	/** 速度 HEX 1 字节 单位为公里/小时 */
	public void setSpeed(int speed) {
		this.speed = speed;
	}

	/** 方位角 HEX 1 字节 除以 2 后取整 */
	public int getAngle() {
		return angle;
	}

	/** 方位角 HEX 1 字节 除以 2 后取整 */
	public void setAngle(int angle) {
		this.angle = angle;
	}

	/** 海拔高度 HEX 2 字节 单位为米 */
	public int getAltitude() {
		return altitude;
	}

	/** 海拔高度 HEX 2 字节 单位为米 */
	public void setAltitude(int altitude) {
		this.altitude = altitude;
	}

	/** 站点编号 HEX 2 字节 告警前一站站号 */
	public int getStationNum() {
		return stationNum;
	}

	/** 站点编号 HEX 2 字节 告警前一站站号 */
	public void setStationNum(int stationNum) {
		this.stationNum = stationNum;
	}

	/**
	 * 运行标准 HEX 1 字节 告警参照的标准， 见告警类 型表中的说明 : <br>
	 * 0x01 超速告警 运行标准为限速标准，最高数值为超速期间最高速度 <br>
	 * 0x02 偏离线路 运行标准为 0，最高数值为偏离线路期间最远距离 <br>
	 * 0x03 到站未停车 运行标准为 0，最高数值为 0 <br>
	 * 0x04 开门行车 运行标准为 0，最高数值为 0 <br>
	 * 0x05 到站未开车门 运行标准为 0，最高数值为 0 <br>
	 * 0x06 中途开车门 运行标准为 0，最高数值为 0 <br>
	 * 0x07 车厢温度高（2） 最高数值为最高温度，最高位为正负 <br>
	 * 0x08 车厢温度低（2） 最高数值为最低温度，最高位为正负 <br>
	 * 0x09 滞站告警 最高数值为 0（新报站系统里是否有该参数？） <br>
	 * 0x10 紧急加速（2） <br>
	 * 0x11 紧急刹车（2） <br>
	 * 0x12 票箱门报警（1+） 运行标准为 0，最高数值为 0 <br>
	 * 0x13 不录像报警 ? <br>
	 * 0x14 硬盘丢失告警 运行标准为 0，最高数值为 0 <br>
	 * 0x15 SD 卡丢失告警 运行标准为 0，最高数值为 0 <br>
	 * 0x16 GPS 模块告警 运行标准为 0，最高数值参见“硬件附件状态表” <br>
	 * 0x17 硬盘故障告警 运行标准为 0，最高数值为故障编码 <br>
	 * 0x18 视频丢失告警 运行标准为 0，最高数值为视频通道号。 <br>
	 * 0x19 打板告警 运行标准为 0，最高数值为 0 <br>
	 * 0x20 磁盘格式化 运行标准为 0，最高数值为 0 <br>
	 * 0x21 POS 机车号不匹配 运行标准为 0，最高数值为 0 <br>
	 * 0x22 黑点，弯点告警 运行标准为 0，最高数值为 0 <br>
	 * 0x23 气压 1 告警 运行标准为 0，最高数值为 0 <br>
	 * 0x24 气压 2 告警 运行标准为 0，最高数值为 0 <br>
	 * 0x25 机油压力报警 运行标准为 0，最高数值为 0 <br>
	 * 0x26 冷却水位报警 运行标准为 0，最高数值为 0 <br>
	 * 0x27 发动机仓温过高 运行标准为 0，最高数值为 0 <br>
	 * 0x28 转速报警 运行标准为 0，最高数值为 0 <br>
	 * 0x29 水温报警 运行标准为 0，最高数值为 0 <br>
	 * 0x30 电压报警 运行标准为 0，最高数值为 0 <br>
	 * 0x31 电子站牌传感器震 动告警运行标准为 0，最高数值为 0 <br>
	 * 0x32 电子站牌门磁开关告警
	 */
	public int getWarnType() {
		return warnType;
	}

	/**
	 * 运行标准 HEX 1 字节 告警参照的标准， 见告警类 型表中的说明 : <br>
	 * 0x01 超速告警 运行标准为限速标准，最高数值为超速期间最高速度 <br>
	 * 0x02 偏离线路 运行标准为 0，最高数值为偏离线路期间最远距离 <br>
	 * 0x03 到站未停车 运行标准为 0，最高数值为 0 <br>
	 * 0x04 开门行车 运行标准为 0，最高数值为 0 <br>
	 * 0x05 到站未开车门 运行标准为 0，最高数值为 0 <br>
	 * 0x06 中途开车门 运行标准为 0，最高数值为 0 <br>
	 * 0x07 车厢温度高（2） 最高数值为最高温度，最高位为正负 <br>
	 * 0x08 车厢温度低（2） 最高数值为最低温度，最高位为正负 <br>
	 * 0x09 滞站告警 最高数值为 0（新报站系统里是否有该参数？） <br>
	 * 0x10 紧急加速（2） <br>
	 * 0x11 紧急刹车（2） <br>
	 * 0x12 票箱门报警（1+） 运行标准为 0，最高数值为 0 <br>
	 * 0x13 不录像报警 ? <br>
	 * 0x14 硬盘丢失告警 运行标准为 0，最高数值为 0 <br>
	 * 0x15 SD 卡丢失告警 运行标准为 0，最高数值为 0 <br>
	 * 0x16 GPS 模块告警 运行标准为 0，最高数值参见“硬件附件状态表” <br>
	 * 0x17 硬盘故障告警 运行标准为 0，最高数值为故障编码 <br>
	 * 0x18 视频丢失告警 运行标准为 0，最高数值为视频通道号。 <br>
	 * 0x19 打板告警 运行标准为 0，最高数值为 0 <br>
	 * 0x20 磁盘格式化 运行标准为 0，最高数值为 0 <br>
	 * 0x21 POS 机车号不匹配 运行标准为 0，最高数值为 0 <br>
	 * 0x22 黑点，弯点告警 运行标准为 0，最高数值为 0 <br>
	 * 0x23 气压 1 告警 运行标准为 0，最高数值为 0 <br>
	 * 0x24 气压 2 告警 运行标准为 0，最高数值为 0 <br>
	 * 0x25 机油压力报警 运行标准为 0，最高数值为 0 <br>
	 * 0x26 冷却水位报警 运行标准为 0，最高数值为 0 <br>
	 * 0x27 发动机仓温过高 运行标准为 0，最高数值为 0 <br>
	 * 0x28 转速报警 运行标准为 0，最高数值为 0 <br>
	 * 0x29 水温报警 运行标准为 0，最高数值为 0 <br>
	 * 0x30 电压报警 运行标准为 0，最高数值为 0 <br>
	 * 0x31 电子站牌传感器震 动告警运行标准为 0，最高数值为 0 <br>
	 * 0x32 电子站牌门磁开关告警
	 */
	public void setWarnType(int warnType) {
		this.warnType = warnType;
	}

	/** 运行标准 HEX 1 字节 告警参照的标准， 见告警类 型表中的说明 */
	public int getStandValue() {
		return standValue;
	}

	/** 运行标准 HEX 1 字节 告警参照的标准， 见告警类 型表中的说明 */
	public void setStandValue(int standValue) {
		this.standValue = standValue;
	}

	/** 起始标识 HEX 1 字节 0 为结束，1 为开始 */
	public int getStart() {
		return start;
	}

	/** 起始标识 HEX 1 字节 0 为结束，1 为开始 */
	public void setStart(int start) {
		this.start = start;
	}

	/** 最高数值 HEX 2 字节 起始标识为 0 时填入该项 数值， 见告警类型表中的说明 */
	public int getMaxValue() {
		return maxValue;
	}

	/** 最高数值 HEX 2 字节 起始标识为 0 时填入该项 数值， 见告警类型表中的说明 */
	public void setMaxValue(int maxValue) {
		this.maxValue = maxValue;
	}

	/** 持续时间 HEX 2 字节 起始标识为 0 时填入该项 数值 */
	public int getWarnDuration() {
		return warnDuration;
	}

	/** 持续时间 HEX 2 字节 起始标识为 0 时填入该项 数值 */
	public void setWarnDuration(int warnDuration) {
		this.warnDuration = warnDuration;
	}

	/** 预留 HEX 2 字节 预留 */
	public int getReversed() {
		return reversed;
	}

	/** 预留 HEX 2 字节 预留 */
	public void setReversed(int reversed) {
		this.reversed = reversed;
	}

	@Override
	public String toString() {
		return "Rm0x21TerminalMessage [createTime=" + createTime + ", lat=" + lat + ", lng=" + lng + ", speed=" + speed
				+ ", direction=" + angle + ", altitude=" + altitude + ", stationNum=" + stationNum + ", warnType="
				+ warnType + ", standValue=" + standValue + ", start=" + start + ", maxValue=" + maxValue
				+ ", warnDuration=" + warnDuration + ", reversed=" + reversed + "]";
	}

}
